package com.tebiecloud.goods.server.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.tebiecloud.common.security.SecurityHelper;
import com.tebiecloud.common.security.SecurityUserDetails;
import com.tebiecloud.goods.client.model.entity.GoodsCollect;
import com.tebiecloud.goods.client.model.vo.GoodsListVO;
import com.tebiecloud.goods.server.service.GoodsCollectService;
import com.tebiecloud.common.model.PageParams;
import com.tebiecloud.common.model.ResultBody;
import com.tebiecloud.common.utils.ResultBodyUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.Map;

/**
 * 收藏表 前端控制器
 * @author tebie
 * @date 2019-09-23
 */
@RestController
@RequestMapping("/goodscollect")
public class GoodsCollectController {

    @Autowired
    private GoodsCollectService goodsCollectService;

    /**
     * 收藏接口
     * @param goodsId 活动id,
     * @param isCollect 是否收藏：0否，1是
     * @return
     */
    @PostMapping("createorupdate")
    public ResultBody createOrupdate(
        @RequestParam(value = "goodsId", required = false) Long goodsId,
        @RequestParam(value = "actId", required = false) Long actId,
        @RequestParam(value = "isCollect", required = false) int isCollect
    ) {
        //当前用户信息
        SecurityUserDetails securityUserDetails = SecurityHelper.getUser();
        long userId = securityUserDetails.getUserId();
        //查询是否有收藏
        QueryWrapper<GoodsCollect> goodsCollectQueryWrapper = new QueryWrapper<>();
        goodsCollectQueryWrapper.eq("goods_id",goodsId);
        goodsCollectQueryWrapper.eq("user_id",userId);
        int count = goodsCollectService.count(goodsCollectQueryWrapper);
        if(count>0){
            if(isCollect == 0) goodsCollectService.remove(goodsCollectQueryWrapper);
        }else{
            if(isCollect == 1) {
                GoodsCollect goodsCollect = new GoodsCollect();
                goodsCollect.setGoodsId(goodsId);
                goodsCollect.setActId(actId);
                goodsCollect.setUserId(userId);
                goodsCollectService.save(goodsCollect);
            }
        }
        return ResultBodyUtils.ok();
    }

    /**
     * 获取我的收藏列表
     * @param page
     * @param limit
     * @param lng
     * @param lat
     * @return
     */
    @PostMapping(value = "list")
    public ResultBody<IPage<GoodsListVO>> list(
            @RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
            @RequestParam(value = "limit", defaultValue = "10", required = false) Integer limit,
            @RequestParam(value = "lng", required = false) Double lng,
            @RequestParam(value = "lat", required = false) Double lat) {
        return ResultBodyUtils.ok(goodsCollectService.selectGoodsCollectList(page,limit,lng,lat));
    }

//    /**
//     * 获取分页数据
//     * @param map
//     * @return
//     */
//    @GetMapping(value = "list")
//    public ResultBody<IPage<GoodsCollect>> list(@RequestParam(required = false) Map map) {
//        PageParams pageParams = new PageParams(map);
//        GoodsCollect query = pageParams.mapToObject(GoodsCollect.class);
//        QueryWrapper<GoodsCollect> queryWrapper = new QueryWrapper();
//        return ResultBodyUtils.ok(goodsCollectService.page(new PageParams(map), queryWrapper));
//    }
//
//    /**
//     * 根据ID查找数据
//     * @param id
//     * @return
//     */
//    @GetMapping("get")
//    public ResultBody<GoodsCollect> get(@RequestParam("id") Long id) {
//        GoodsCollect entity = goodsCollectService.getById(id);
//        return ResultBodyUtils.ok(entity);
//    }
//
//    /**
//     * 添加数据
//     * @param goodsId 活动id,
//     * @param userId 用户id
//     * @return
//     */
//    @PostMapping("add")
//    public ResultBody add(
//        @RequestParam(value = "goodsId", required = false) Long goodsId,
//        @RequestParam(value = "userId", required = false) Long userId
//    ) {
//        GoodsCollect entity = new GoodsCollect();
//        entity.setGoodsId(goodsId);
//        entity.setUserId(userId);
//        goodsCollectService.save(entity);
//        return ResultBodyUtils.ok();
//    }
//
//    /**
//     * 更新数据
//     * @param goodsId 活动id
//     * @param userId 用户id
//     * @return
//     */
//    @PostMapping("update")
//    public ResultBody update(
//            @RequestParam(value = "goodsCollectId", required = false) Long goodsCollectId,
//            @RequestParam(value = "goodsId", required = false) Long goodsId,
//            @RequestParam(value = "userId", required = false) Long userId
//    ) {
//        GoodsCollect entity = new GoodsCollect();
//        entity.setGoodsCollectId(goodsCollectId);
//        entity.setGoodsId(goodsId);
//        entity.setUserId(userId);
//        goodsCollectService.updateById(entity);
//        return ResultBodyUtils.ok();
//    }
//
//    /**
//     * 删除数据
//     * @param id 单个id
//     * @param ids 多个id用,号隔开
//     * @return
//     */
//    @PostMapping("remove")
//    public ResultBody remove(
//            @RequestParam(value = "id", required = false) Long id,
//            @RequestParam(value = "ids", required = false) String ids
//    ) {
//        if(id != null && id > 0) {
//            goodsCollectService.removeById(id);
//        }
//        if(ids != null && ids.length() > 0) {
//            goodsCollectService.removeByIds(Arrays.asList(ids.split(",")));
//        }
//        return ResultBodyUtils.ok();
//    }

}
